package manager

import (
	"BlazeRider-backend/config"
	"database/sql"
	"fmt"
	"sync"
)

// ClientErrorRecordManager 管理礼物赠送记录
type ClientErrorRecordManager struct {
	roomGiftRecords map[string]map[string][]GiftRecord
	storage         ClientErrorRecordMysqlStorage
	mu              sync.Mutex
}

// GiftRecord 表示单个礼物的赠送记录
type ClientErrorRecord struct {
	LiveRoomId string       `json:"live_room_id"`
	Desc       string       `json:"desc"`
	Env        string       `json:"env"`
	ExtraS1    string       `json:"extra_s_1"`
	ExtraS2    string       `json:"extra_s_2"`
	ExtraS3    string       `json:"extra_s_3"`
	ExtraS4    string       `json:"extra_s_4"`
	ExtraS5    string       `json:"extra_s_5"`
	ExtraI1    string       `json:"extra_i_1"`
	ExtraI2    string       `json:"extra_i_2"`
	ExtraI3    string       `json:"extra_i_3"`
	ExtraI4    string       `json:"extra_i_4"`
	ExtraI5    string       `json:"extra_i_5"`
	CreateAt   sql.NullTime `json:"create_at"` // 使用 NullTime
	UpdateAt   sql.NullTime `json:"update_at"` // 使用 NullTime
}

func NewClientErrorRecordManager() *ClientErrorRecordManager {
	var storage *ClientErrorRecordMysqlStorage
	var err error
	if config.Get().Database.Enabled {
		storage, err = NewClientErrorRecordMysqlStorage()
		if err != nil {
			return nil
		}

		return &ClientErrorRecordManager{
			storage: *storage,
		}
	}
	return &ClientErrorRecordManager{
		roomGiftRecords: make(map[string]map[string][]GiftRecord),
	}
}

// AddClientErrorRecord 增加礼物赠送记录
func (grm *ClientErrorRecordManager) AddClientErrorRecord(liveRoomID, desc, env, extraS1, extraS2, extraS3, extraS4, extraS5 string, extraI1, extraI2, extraI3, extraI4, extraI5 int) error {
	if config.Get().Database.Enabled {
		err := grm.storage.AddClientErrorRecord(liveRoomID, desc, env, extraS1, extraS2, extraS3, extraS4, extraS5, extraI1, extraI2, extraI3, extraI4, extraI5)
		if err != nil {
			return err
		}
		return nil
	}

	return fmt.Errorf("AddClientErrorRecord no mem logic")
}
